package modelo;

import java.awt.Point;
import java.util.LinkedList;
import java.util.ListIterator;

import fiuba.algo3.titiritero.modelo.ObjetoPosicionable;

public class Casillero implements ObjetoPosicionable{
	private Point posicion;
	private LinkedList<Contenido> contenido;
	private boolean salida;
	
	public Casillero(Point pos){
		this.setPosicion(pos);
		this.salida = false;
		this.contenido = new LinkedList<Contenido>();
		
	}	
	
	public boolean esSalida(){
		return this.salida;
	}
	
	public void agregarContenido(Contenido contenido){
		this.contenido.add(contenido);
		contenido.setPosicion(this.posicion);
	}
	
	
	public void marcarComoSalida(){
		this.salida = true;
	}
	
	public boolean estaOcupado(){
		for (int i = 0; i < this.contenido.size(); i++){
			if(contenido.get(i).ocupaCasillero()){
				return true;
			}
		}
		
		return false;
	}
	
	public boolean estaVacio(){
		return this.contenido.size() == 0;
	}
	
	public void eliminarDestruidos(){
		for(int i = 0; i <= this.contenido.size(); i++){
			if (this.contenido.get(i).getVidas() <= 0){
				this.contenido.remove(i);
			}
		}
	}
	
	public void quitarContenido(Contenido contenido){
		this.contenido.remove(contenido);
	}
	
	public LinkedList<Contenido> getContenido(){
		return this.contenido;
	}

	public Point getPosicion() {
		return posicion;
	}

	public void setPosicion(Point posicion) {
		this.posicion = posicion;
	}
	
	public void impactoMolotov(BombaMolotov bomba){
		ListIterator<Contenido> it = this.contenido.listIterator();
		while(it.hasNext()){
			Contenido contenido = it.next();
			contenido.impactoMolotov(bomba);
			System.out.print("impacto molotov a"+ contenido.getClass()+ "\n");
		}	
	}
	
	public void impactoMisil(Misil misil){
		ListIterator<Contenido> it = this.contenido.listIterator();
		while(it.hasNext()){
			Contenido contenido = it.next();
			contenido.impactoMisil(misil);
			System.out.print("impacto misil a"+ contenido.getClass()+"\n");
		}		
	}
	
	public void impactoToletole(BombaToletole bomba){
		ListIterator<Contenido> it = this.contenido.listIterator();
		while(it.hasNext()){
			Contenido contenido = it.next();
			contenido.impactoToletole(bomba);
			System.out.print("impacto toletole a"+ contenido.getClass()+"\n");
		}
		
	}
	
	public int getX(){
		return (int)this.posicion.getX();
	}
	
	public int getY(){
		return (int)this.posicion.getY();
	}
}
